package com.itheima.health.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.itheima.health.common.MessageConst;
import com.itheima.health.entity.PageResult;
import com.itheima.health.entity.QueryPageBean;
import com.itheima.health.entity.Result;
import com.itheima.health.pojo.CheckItem;
import com.itheima.health.service.CheckItemService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @author ：shirongrong
 * @date ：Created in 2020/3/19
 * @description ：检查项控制器
 * @version: 1.0
 */
@RestController
@Slf4j
@RequestMapping("/checkitem")

public class CheckItemController {

    //远程调用Service
    @Reference
    private CheckItemService checkItemService;
    /**
     * 新增检查项web方法
     */
    @RequestMapping("/add")
    public Result add(@RequestBody CheckItem checkItem){
     try {
         log.debug("CheckItemController checkItem:{}",checkItem);
         checkItemService.add(checkItem);
         return  new Result(true, MessageConst.ADD_CHECKGROUP_SUCCESS);
     }catch (Exception e){
         e.printStackTrace();
         return  new Result(false, MessageConst.ADD_CHECKGROUP_FAIL);
     }
    }
    /**
     * 分页查询
     *  1.调用Service获取分页结果数据
     *  2.成功，直接返回有内容的结果
     *  3.失败，返回初始化结果，记录为0，数据为空
     * @param queryPageBean
     * @return
     */
    @RequestMapping("/findPage")
    public PageResult findPage(@RequestBody QueryPageBean queryPageBean){
        log.debug("queryBean:{}",queryPageBean);
        try{
            // 调用Service获取分页结果数据
            PageResult pageResult = checkItemService.pageQuery(queryPageBean);
            // 成功，直接返回有内容的结果
            return pageResult;
        }catch(Exception e){
            e.printStackTrace();
        }
        // 失败，返回初始化结果，记录为0，数据为空
        return new PageResult(0L,null);
    }
    /**
     * 基于ID，删除检查项
     *  1.调用Service删除检查项
     *  2.成功，返回预定义成功消息
     *  3.失败，返回异常消息
     * @param id
     * @return
     */
    @RequestMapping("/delete")
    public Result delete(Integer id){
        try{
            // 调用Service删除检查项
            checkItemService.deleteByid(id);
            // 成功，返回预定义成功消息
            return new Result(true,MessageConst.DELETE_CHECKITEM_SUCCESS);
        }catch(Exception e){
            e.printStackTrace();
            // 失败，返回异常消息
            return new Result(false,e.getMessage());
        }
    }
    /**
     * 基于ID，获取检查项数据
     * 1. 调用Service,基于ID获取检查项对象
     * 2. 成功，返回检查项对象数据
     * 3. 失败，返回操作失败消息
     * @param id 检查项ID
     * @return
     */
    @RequestMapping("/findById")
    public Result findById(Integer id){
        try{
            // 调用Service,基于ID获取检查项对象
            CheckItem checkItem = checkItemService.findById(id);
            // 成功，返回检查项对象数据
            return new Result(true,MessageConst.ACTION_SUCCESS,checkItem);
        }catch(Exception e){
            e.printStackTrace();
            // 失败，返回操作失败消息
            return new Result(false,MessageConst.ACTION_FAIL);
        }
    }
    /**
     * 基于ID，更新检查项数据
     * 1.调用Service，更新数据
     * 2.成功，返回编辑成功消息
     * 3.失败，返回编辑失败消息
     * @param checkItem 检查项表单数据
     * @return
     */
    @RequestMapping("/edit")
    public Result edit(@RequestBody  CheckItem checkItem){
        try{
            log.debug("edit checkItem:{}",checkItem);
            // 调用Service，更新数据
            checkItemService.edit(checkItem);
            // 成功，返回编辑成功消息
            return new Result(true,MessageConst.EDIT_CHECKITEM_SUCCESS);
        }catch(Exception e){
            e.printStackTrace();
            // 失败，返回编辑失败消息
            return new Result(false,MessageConst.EDIT_CHECKITEM_FAIL);
        }
    }

    @RequestMapping("/findAll")
    public Result finAll(){
        try{
        List<CheckItem> list=checkItemService.findAll();
        return  new Result(true,MessageConst.QUERY_CHECKITEM_SUCCESS,list);
        }catch(Exception e){
             e.printStackTrace();
            return new Result(false,MessageConst.QUERY_CHECKITEM_FAIL);
        }



    }




}
